/**
 * ReportGear(2011)
 */
package com.reportgear.core.util;

/**
 * 单位转换实用类<br/>
 * 系统中所有存储的单位使用英寸
 * 
 * @version 1.0 2011-5-8
 * @author <a herf="lexloo@gmail.com">lexloo</a>
 * @since Report 1.0
 */
public class UnitUtils {
	/**
	 * 磅每英寸 - 1磅等于1/72英寸
	 */
	public static final double PT_PER_INCH = 72D;

	/**
	 * 像素每英寸 - 界面显示相关
	 */
	public static final double PIXEL_PER_INCH = 96D;

	/**
	 * 毫米每英寸 - 1英寸等于25.399999999999999毫米
	 */
	public static final double MM_PER_INCH = 25.399999999999999D;

	/**
	 * 像素每磅
	 */
	public static final double PIXEL_PER_PT = PIXEL_PER_INCH / PT_PER_INCH;

	/**
	 * 毫米转换成英寸
	 * 
	 * @param mm
	 *            毫米数
	 * @return 英寸
	 */
	public static double mm2inch(double mm) {
		return (mm / MM_PER_INCH);
	}

	/**
	 * 英寸转换成毫米
	 * 
	 * @param inchs
	 *            英寸
	 * @return 毫米
	 */
	public static double inch2mm(double inch) {
		return (inch * MM_PER_INCH);
	}

	/**
	 * 磅转换为英寸
	 * 
	 * @param pt
	 *            磅数
	 * @return 英寸
	 */
	public static double pt2inch(int pt) {
		return pt / PT_PER_INCH;
	}

	/**
	 * 英寸转换为磅数
	 * 
	 * @param inch
	 *            英寸
	 * @return 磅数
	 */
	public static double inch2pt(double inch) {
		return inch * PT_PER_INCH;
	}

	/**
	 * 像素点数转换为英寸
	 * 
	 * @param pixels
	 *            像素点数
	 * @return 英寸
	 */
	public static double pixel2inch(double pixels) {
		return pixels / PIXEL_PER_INCH;
	}

	/**
	 * 英寸转换为像素点数
	 * 
	 * @param inch
	 *            英寸
	 * @return 像素点数
	 */
	public static int inch2pixel(double inch) {
		return (int) (inch * PIXEL_PER_INCH);
	}
}
